package com.mytijian.task.repository.database.dao;

import com.mytijian.task.repository.database.dao.daoobject.SubTaskDO;
import com.mytijian.task.repository.database.dao.daoobject.TaskDO;
import com.mytijian.task.repository.database.dao.daoobject.SubTaskCount;
import com.mytijian.task.repository.database.dao.daoobject.TaskIdentifyDO;
import com.mytijian.task.model.TaskIdentify;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TaskDAO {
    int insert(TaskDO task);

    void batchInsert(List<SubTaskDO> subTasks);

    void updateTaskStatus(@Param("taskId") Integer taskId,@Param("status") Integer status);

    void batchUpdateSubTask(@Param("taskId") Integer taskId,
                            @Param("subTaskIds") List<Integer> subTaskIds,
                            @Param("status") Integer status,
                            @Param("failScene") Integer failScene,
                            @Param("failText")String failText);
    void updateSubTask(@Param("id") Integer id,@Param("status") Integer status,@Param("failScene") Integer failScene);

    List<SubTaskCount> countSubTaskGroupByTaskIdStatus(@Param("taskIds")List<Integer> taskIds);
    List<TaskDO> getTasksByIds(List<Integer> ids);

    List<SubTaskDO> getSubTaskByIds(List<Integer> ids);

    List<SubTaskDO> getSubTaskByTaskIds(@Param("list") List<Integer> taskIds, @Param("status") List<Integer> status);

    List<SubTaskDO> getSubTasksInId(@Param("taskId")Integer taskId, @Param("beginId") Integer beginId, @Param("endId") Integer endId);

    void saveTaskIdentify(TaskIdentifyDO taskIdentifyDO);

    List<Integer> getSubTaskIds(@Param("taskId") Integer taskId ,@Param("beginSubTaskId") Integer beginSubTaskId, @Param("endSubTaskId") Integer endSubTaskId, @Param("status") List<Integer> instatus);

    TaskIdentifyDO getTaskIdentify(TaskIdentify taskIdentify);

    List<TaskIdentifyDO> getTaskIdentifies(Integer taskId);
    void updateTaskIdentify(TaskIdentifyDO taskIdentifyDO);
}
